package cn.iocoder.yudao.module.infra.service.face;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.infra.api.face.dto.FaceOperationRespVO;
import cn.iocoder.yudao.module.infra.controller.admin.face.vo.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * 人脸识别 Service 接口
 *
 * @author 芋道源码
 */
public interface FaceService {

    /**
     * 人脸注册
     *
     * @param userId 用户ID
     * @param faceImage 人脸图片
     * @param groupId 人脸库分组ID
     * @return 注册结果
     */
    Map<String, Object> registerFace(Long userId, MultipartFile faceImage, String groupId);

    /**
     * 人脸搜索
     *
     * @param faceImage 人脸图片
     * @param groupId 人脸库分组ID
     * @return 搜索结果
     */
    Map<String, Object> searchFace(MultipartFile faceImage, String groupId);

    /**
     * 人脸检测
     *
     * @param faceImage 人脸图片
     * @return 检测结果
     */
    Map<String, Object> detectFace(MultipartFile faceImage);

    /**
     * 人脸验证
     *
     * @param userId 用户ID
     * @param faceImage 人脸图片
     * @return 验证结果
     */
    Map<String, Object> verifyFace(Long userId, MultipartFile faceImage);

    /**
     * 删除人脸
     *
     * @param userId 用户ID
     * @param groupId 人脸库分组ID
     * @return 删除结果
     */
    Map<String, Object> deleteFace(Long userId, String groupId);

    /**
     * 删除人脸
     *
     * @param deleteReqVO 删除请求VO
     * @return 删除结果
     */
    Boolean deleteFace(FaceDeleteReqVO deleteReqVO);

    // ========== Base64 版本的方法 ==========

    /**
     * 人脸注册 - Base64
     *
     * @param registerReqVO 注册请求
     * @return 注册结果
     */
    FaceOperationRespVO registerFaceBase64(FaceRegisterBase64ReqVO registerReqVO);

    /**
     * 人脸搜索（Base64）
     *
     * @param searchReqVO 搜索请求VO
     * @return 搜索结果
     */
    FaceSearchRespVO searchFaceBase64(FaceSearchBase64ReqVO searchReqVO);

    /**
     * 人脸检测（Base64）
     *
     * @param detectReqVO 检测请求VO
     * @return 检测结果
     */
    String detectFaceBase64(FaceDetectBase64ReqVO detectReqVO);

}